
const defaultState = {
    // 输入框说明
    label: '',

    // 附加信息
    meta: {},

    // 输入值
    value: '',

    // 是否显示
    isOpen: false,

    // 结束时调用 Action
    nextAction: ''
};

/**
 * 显示路径输入框
 * @type {String}
 */
export const SHOW_PATH_INPUT_BAR = 'SHOW_PATH_INPUT_BAR';

/**
 * 关闭路径输入框
 * @type {String}
 */
export const HIDE_PATH_INPUT_BAR = 'HIDE_PATH_INPUT_BAR';

/**
 * 更新路径输入框(内容)
 * @type {String}
 */
export const UPDATE_PATH_INPUT_BAR = 'UPDATE_PATH_INPUT_BAR';

/**
 * 路径输入框 Reducer
 * @param {Object} state
 * @param {Object} action
 */
export default function pathInputBarReducer(state = defaultState, action) {
    switch (action.type) {
        case SHOW_PATH_INPUT_BAR:
            return {
                ...state,
                label: action.payload.label,
                meta: action.payload.meta,
                // 使用当前路径作为输入框默认值
                value: action.payload.meta.origin,
                isOpen: true,
                nextAction: action.payload.nextAction
            };
        case HIDE_PATH_INPUT_BAR:
            return {
                ...state,
                isOpen: false
            };
        case UPDATE_PATH_INPUT_BAR:
            return {
                ...state,
                value: action.payload
            };
        default:
            return state;
    }
}